﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using System.Web.Routing;
using Smart.Web.Mobile;
using MobileWebMvc.Settings;

namespace MobileWebMvc
{
    // メモ: IIS6 または IIS7 のクラシック モードの詳細については、
    // http://go.microsoft.com/?LinkId=9394801 を参照してください

    public class MvcApplication : System.Web.HttpApplication
    {
        /// <summary>
        /// 
        /// </summary>
        public MvcApplication()
        {
            this.PreRequestHandlerExecute += OnPreRequestHandlerExecute;
        }

        /// <summary>
        /// 
        /// </summary>
        /// <param name="routes"></param>
        public static void RegisterRoutes(RouteCollection routes)
        {
            routes.IgnoreRoute( "{resource}.axd/{*pathInfo}" );

            routes.MapRoute(
                "Default", // ルート名
                "{controller}/{action}/{id}", // パラメーター付きの URL
                new { controller = "Home", action = "Index", id = UrlParameter.Optional } // パラメーターの既定値
            );

        }

        /// <summary>
        /// 
        /// </summary>
        protected void Application_Start()
        {
            AreaRegistration.RegisterAllAreas();

            RegisterRoutes( RouteTable.Routes );

            // 初期化
            MobileSettings.Default.Init( Server.MapPath( "App_Data\\Mobile\\mobile.xml" ) );
        }

        /// <summary>
        /// 
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void OnPreRequestHandlerExecute(object sender, System.EventArgs e)
        {
            if( Response.ContentType == "text/html" )
            {
                // コンテキスト初期化
                WebMobileContext.Current.Initialize( Request.UserAgent, MobileSettings.Default );

                // エンコーディング
                Request.ContentEncoding = SitePolicy.GetEncodingForCurrentTarget();
            }
        }
    }
}